const https = require('https');
const fs = require('fs');

let htmlPath = '/home/build/index,html';
let cssPath = '/home/build/static/css'; 
let jsPath = '/home/build/static/js';
let mediaPath = '/home/build/static/media'
let rootPath = '/home/build';
const cert_path = '/usr/local/share';
const options = {
    cert: fs.readFileSync(`${cert_path}/api.hiehie.top.pem`),
    key:fs.readFileSync(`${cert_path}/api.hiehie.top.key`)
}
https.createServer(options,(req,res)=>{
    
    let url = req.url;
    console.log(url);
    let urlArr = url.split('/');
    console.log(urlArr)
    if (urlArr[1] === 'k-utaha') {
        fs.readFile(htmlPath,(e,data)=>{
            if (e) {
                res.end('呕吼,出错了!')
            }
            else{
                res.setHeader("Content-Type",'text/html;charset=utf8');
                res.write(data);
            }
        });
    }
    else if (urlArr[1] === 'static') { 
        if (urlArr[2] === 'css') { // 
            let cssdir = fs.readdirSync(cssPath);
            let flag = false;
            for (const fn of cssdir) {
                if (fn === urlArr[3]) {
                    flag = true;
                }
            }
            if (flag) {
                fs.readFile(cssPath+'/'+urlArr[3],(e,data)=>{ 
                    if (e) {
                        console.log(e);
                        res.end('Something wrong!');
                    }
                    else{
                        res.setHeader("Content-Type",'text/css');
                        res.write(data);
                    }
                });
            }
            else{
                res.statusCode(404);
                res.write('404 Not Found');
            }
        }
        else if(urlArr[2] === 'js'){
            let jsdir = fs.readdirSync(jsPath);
            let flag = false;
            for (const fn of jsdir) {
                if (fn === urlArr[3]) {
                    flag = true;
                }
            }
            if (flag) {
                fs.readFile(jsPath+'/'+urlArr[3],(e,data)=>{ 
                    if (e) {
                        console.log(e);
                        res.end('Something wrong!');
                    }
                    else{
                        res.setHeader("Content-Type",'text/css');
                        res.write(data);
                    }
                });
            }
            else{
                res.statusCode(404);
                res.write('404 Not Found');
            }
            
        }
        else if(urlArr[2] === 'media'){
            let mediadir = fs.readdirSync(mediaPath);
            let flag = false;
            for (const fn of mediadir) {
                if (fn === urlArr[3]) {
                    flag = true;
                }
            }
            if (flag) {
                fs.readFile(mediaPath+'/'+urlArr[3],(e,data)=>{ 
                    if (e) {
                        console.log(e);
                        res.write('Something wrong!');
                    }
                    else{
                        res.write(data);
                    }
                });
            }
            else{
                res.statusCode(404);
                res.write('404 Not Found');
            }
            
        }
    }
    else{
        let rootdir = fs.readdirSync(rootPath);
        let flag = false;
        let exName = urlArr[1];
        for (const fn of rootdir) {
            if (fn === urlArr[1]) {
                flag = true;
            }
        }
        if (flag) {
            fs.readFile(rootPath+'/'+urlArr[3],(e,data)=>{ 
                if (e) {
                    console.log(e);
                    res.write('Something wrong!');
                }
                else{
                    let ex = exName.split('.');
                    if (ex[1] === 'png') {
                        res.writeHead(200,{'Content-Type':'image/png'})
                    }
                    else if (ex[1] === 'jpg') {
                        res.writeHead(200,{'Content-Type':'image/jpeg'})
                    }
                    else if (ex[1] === 'json') {
                        res.writeHead(200,{'Content-Type':'application/json'})
                    }
                    else if (ex[1] === 'ico') {
                        res.writeHead(200,{'Content-Type':'image/x-icon'})
                    }
                    else{

                    }
                    res.write(data);
                }
            });
        }
        else{
            res.statusCode(404);
            res.write('404 Not Found');
        }
    }
    res.end('utaha');
}).listen(6000);
console.log("Server is listen 6000");




// 以下用于测试核心功能
// const http = require('http');

// http.createServer((req,res)=>{

//     let url = req.url;
//     console.log(url);
//     let urlArr = url.split('/');
//     console.log(urlArr)
//     if (urlArr[1] === 'k-utaha') {
//         fs.readFile(htmlPath,(e,data)=>{
//             if (e) {
//                 res.end('呕吼,出错了!')
//             }
//             else{
//                 res.setHeader("Content-Type",'text/html;charset=utf8');
//                 res.write(data);
//             }
//         });
//     }
//     else if (urlArr[1] === 'static') { 
//         if (urlArr[2] === 'css') { // 
//             let cssdir = fs.readdirSync(cssPath);
//             let flag = false;
//             for (const fn of cssdir) {
//                 if (fn === urlArr[3]) {
//                     flag = true;
//                 }
//             }
//             if (flag) {
//                 fs.readFile(cssPath+'/'+urlArr[3],(e,data)=>{ 
//                     if (e) {
//                         console.log(e);
//                         res.end('Something wrong!');
//                     }
//                     else{
//                         res.setHeader("Content-Type",'text/css');
//                         res.write(data);
//                     }
//                 });
//             }
//             else{
//                 res.statusCode(404);
//                 res.write('404 Not Found');
//             }
//         }
//         else if(urlArr[2] === 'js'){
//             let jsdir = fs.readdirSync(jsPath);
//             let flag = false;
//             for (const fn of jsdir) {
//                 if (fn === urlArr[3]) {
//                     flag = true;
//                 }
//             }
//             if (flag) {
//                 fs.readFile(jsPath+'/'+urlArr[3],(e,data)=>{ 
//                     if (e) {
//                         console.log(e);
//                         res.end('Something wrong!');
//                     }
//                     else{
//                         res.setHeader("Content-Type",'text/css');
//                         res.write(data);
//                     }
//                 });
//             }
//             else{
//                 res.statusCode(404);
//                 res.write('404 Not Found');
//             }
            
//         }
//         else if(urlArr[2] === 'media'){
//             let mediadir = fs.readdirSync(mediaPath);
//             let flag = false;
//             for (const fn of mediadir) {
//                 if (fn === urlArr[3]) {
//                     flag = true;
//                 }
//             }
//             if (flag) {
//                 fs.readFile(mediaPath+'/'+urlArr[3],(e,data)=>{ 
//                     if (e) {
//                         console.log(e);
//                         res.write('Something wrong!');
//                     }
//                     else{
//                         res.write(data);
//                     }
//                 });
//             }
//             else{
//                 res.statusCode(404);
//                 res.write('404 Not Found');
//             }
            
//         }
//     }
//     else{
//         let rootdir = fs.readdirSync(rootPath);
//         let flag = false;
//         let exName = urlArr[1];
//         for (const fn of rootdir) {
//             if (fn === urlArr[1]) {
//                 flag = true;
//             }
//         }
//         if (flag) {
//             fs.readFile(rootPath+'/'+urlArr[3],(e,data)=>{ 
//                 if (e) {
//                     console.log(e);
//                     res.write('Something wrong!');
//                 }
//                 else{
//                     let ex = exName.split('.');
//                     if (ex[1] === 'png') {
//                         res.writeHead(200,{'Content-Type':'image/png'})
//                     }
//                     else if (ex[1] === 'jpg') {
//                         res.writeHead(200,{'Content-Type':'image/jpeg'})
//                     }
//                     else if (ex[1] === 'json') {
//                         res.writeHead(200,{'Content-Type':'application/json'})
//                     }
//                     else if (ex[1] === 'ico') {
//                         res.writeHead(200,{'Content-Type':'image/x-icon'})
//                     }
//                     else{

//                     }
//                     res.write(data);
//                 }
//             });
//         }
//         else{
//             res.statusCode(404);
//             res.write('404 Not Found');
//         }
//     }
//     res.end('utaha');
// }).listen(6000);
// console.log("Server is listen 6000");